/*
* Copyright (C) 2012-2013, <Aeihu.z, aeihu.z@gmail.com>.
*
* Game Scenario Maker is a free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* Version 2(GPLv2) as published by the Free Software Foundation.
*/

//#include "CMenuBox.h"
//
//CMenuBox CMenuBox::menubox;
//
//CMenuBox::CMenuBox()
//{
//    Surf_SelectedItem = NULL;
//    IsMouseOver = false;
//    ShowMaxRows =
//    RowHeight = 0;
//    //OldTime =0;
//    Index = -1;
//
//    SEName_MouseOver =
//    SEName_MouseDown =
//    SEName_BoxClosed = "";
//}
//
//bool CMenuBox::Subclass_Init()
//{
//    SEName_MouseOver = CCommon::common.MOUSEOVER_SE;
//    SEName_MouseDown = CCommon::common.MOUSEDOWN_SE;
//    SEName_BoxClosed = CCommon::common.BOXCLOSED_SE;
//
//    OffsetOfInfo.x = CCommon::common.MENUBOX_INFO_OFFSET_X; 
//    OffsetOfInfo.y = CCommon::common.MENUBOX_INFO_OFFSET_Y; 
//    OffsetOfBox.x = CCommon::common.MENUBOX_LOCATION_X;
//    OffsetOfBox.y = CCommon::common.MENUBOX_LOCATION_Y;
//
//    return true;
//}
//
//bool CMenuBox::OnInit(const char* FileName,
//            int Width, 
//            int Height,
//            int TilesetOfTop,
//            int TilesetOfBottom,
//            int TilesetOfLeft,
//            int TilesetOfRight,
//            int TilesetOfTopLeft, 
//            int TilesetOfTopRight, 
//            int TilesetOfBottomLeft,
//            int TilesetOfBottomRight,
//            int TilesetOfFiller,
//            int SizeOfFiller,
//            int TypeOfAnimation,
//            int TilesetOfSelectedItem,
//            int TilesetOfUpArrow,
//            int TilesetOfDownArrow,
//            int TilesetOfBar)
//{
//    if(!CInfoBox::OnInit(FileName,
//             Width, 
//             Height,
//             TilesetOfTop,
//             TilesetOfBottom,
//             TilesetOfLeft,
//             TilesetOfRight,
//             TilesetOfTopLeft, 
//             TilesetOfTopRight, 
//             TilesetOfBottomLeft,
//             TilesetOfBottomRight,
//             TilesetOfFiller,
//             SizeOfFiller,
//             TypeOfAnimation))
//        return false;
//
//    //Surf_SelectedItem = SDL_CreateRGBSurface(SDL_SRCALPHA | SDL_HWSURFACE | SDL_SRCCOLORKEY, 
//    //    Surf_Info->w , CFont::GetSize(), 32, 0, 0, 0, 0);
//    
//    Surf_SelectedItem = CSurface::OnCreate(Surf_Info->w, CFont::GetSize());
//    if(Surf_SelectedItem == NULL)
//        return false;
//    
//    //if (!CSurface::Transparent(Surf_SelectedItem,
//    //    CCommon::common.COLOR_KEY_RED, 
//    //    CCommon::common.COLOR_KEY_GREEN,
//    //    CCommon::common.COLOR_KEY_BLUE)){
//    //    return false;
// //   }
//
//    int TilesetWidth = Surf_Tilesets->w / CCommon::common.BOX_TILE_SIZE;
//
//    for (int i = 0; i < Surf_SelectedItem->w / CCommon::common.BOX_TILE_SIZE; i++)
//    {
//        CSurface::OnDraw(Surf_SelectedItem, Surf_Tilesets,
//            CCommon::common.BOX_TILE_SIZE * i, 0,
//            (TilesetOfSelectedItem % TilesetWidth) * CCommon::common.BOX_TILE_SIZE, 
//            (TilesetOfSelectedItem / TilesetWidth) * CCommon::common.BOX_TILE_SIZE,
//            CCommon::common.BOX_TILE_SIZE, Surf_SelectedItem->h);
//    }
//    
//    if(!CScrollbar::OnInit(Surf_Info->h, 
//        TilesetOfUpArrow, 
//        TilesetOfDownArrow, 
//        TilesetOfBar, 
//        Surf_Tilesets))
//        return false;
//
//    CScrollbar::SetCoordinate(
//        OffsetOfBox.x + (Width - 2) * CCommon::common.BOX_TILE_SIZE,
//        OffsetOfBox.y + CCommon::common.BOX_TILE_SIZE);
//
//    RowHeight = CFont::GetSize();
//    ShowMaxRows = Surf_Info->h / RowHeight;
//
//    return true;
//}
//
//void CMenuBox::Subclass_Cleanup()
//{
//    if(Surf_Info)
//    {
//        SDL_FreeSurface(Surf_Info);
//        Surf_Info = NULL;
//    }
//    CFont::OnCleanup();
//
//    ClearBtn();
//
//    if (Surf_SelectedItem != NULL)
//        SDL_FreeSurface(Surf_SelectedItem);
//
//    Surf_SelectedItem = NULL;
//    CScrollbar::OnCleanup();
//}
//
//void CMenuBox::OnMouseMove(int x, int y)
//{
//    if (!Visible)
//        return;
//
//    int X = OffsetOfInfo.x + OffsetOfBox.x, Y = OffsetOfInfo.y + OffsetOfBox.y;
//
//    if( ( x > X ) && 
//        ( x < X + Surf_Info->w) && 
//        ( y > Y ) && 
//        ( y < Y + Surf_Info->h) )
//    {
//        int size = BtnList.size();
//        IsMouseOver = true;
//        for (int i = 0; i < (size < ShowMaxRows ? size : ShowMaxRows); i++)
//        {
//            if (y > Y + RowHeight * i && y < Y + RowHeight * (i + 1) - 1)
//            {
//                if (Index != i)
//                {
//                    OnSelectedChange();//CSoundBank::SoundControl.PlaySE(SEName_MouseOver);
//                    Index = i + Offset;
//                }
//                return;
//            }
//        }
//    }
//    else
//    {
//        CScrollbar::OnMouseMove(x,y);
//        IsMouseOver = false;
//    }
//}
//
//void CMenuBox::OnLButtonDown(int x, int y)
//{
//    if (!Visible)
//        return;
//
//    if (IsMouseOver)
//    {
//        if (Index != -1)
//        {
//            CSoundBank::SoundControl.PlaySE(SEName_MouseDown);
//            CParser::parser.InsertCmdList(BtnList[Index].second);
//        }
//    }
//    else
//    {
//        CScrollbar::OnLButtonDown(x, y);
//    }
//}
//
//void CMenuBox::OnLButtonUp(int x, int y)
//{
//    CScrollbar::OnLButtonUp(x, y);
//}
//
//void CMenuBox::OnSelectedChange()
//{
//    CSoundBank::SoundControl.PlaySE(SEName_MouseOver);
//    //CParser::parser.InsertCmdList(SelectedChangeEvent_CmdList);
//}
//
//void CMenuBox::OnLoop()
//{
//    CInfoBox::OnLoop();
//    CScrollbar::OnLoop();
//}
//
//void CMenuBox::OnRender(SDL_Surface* Surf_Dest)
//{
//    if ((Index - Offset) >= 0)
//    {
//        CSurface::OnDraw(Surf_Show, Surf_SelectedItem , 
//            CCommon::common.BOX_TILE_SIZE >> 1, 
//            OffsetOfInfo.y + (Index - Offset) * RowHeight);
//    }
//    
//    CSurface::OnDraw(Surf_Show, Surf_Info, OffsetOfInfo.x, OffsetOfInfo.y);
//    CScrollbar::OnRender(Surf_Show);
//    CBox::OnRender(Surf_Dest, OffsetOfBox);
//}
//
//void CMenuBox::IndexIncr()
//{
//    if (Index < (int)(BtnList.size() - 1))
//    {
//        if (OldTime < SDL_GetTicks())
//            OldTime = SDL_GetTicks() + 100;
//        else
//            return;
//
//        Index++;
//        OnSelectedChange();
//
//        if (Index  >= Offset + Surf_Info->h / RowHeight)
//        {
//            Offset++;
//            Refresh();
//        }
//    }
//}
//
//void CMenuBox::IndexSubt()
//{
//    if (Index > 0)
//    {
//        if (OldTime < SDL_GetTicks())
//            OldTime = SDL_GetTicks() + 100 ;
//        else
//            return;
//
//        Index--;
//        OnSelectedChange();
//    
//        if (Index < Offset)
//        {
//            Offset--;
//            Refresh();
//        }
//    }
//}
//
//void CMenuBox::RefOffset(int value)
//{
//    //int i = Offset;
//    //Offset += value;
//
//    //if (Offset + ShowMaxRows > (int)BtnList.size())
//    //{
//    //    Offset = (int)BtnList.size() - ShowMaxRows;
//    //}
//    //else if (Offset < 0)
//    //{
//    //    Offset = 0;
//    //}
//    
//    Index += value;
//
//    Refresh();
//}
//
//bool CMenuBox::AddBtn(string name, const char* filename, const char* section)
//{
//    vector<string> cmdlist;
//
//    if(!CParser::parser.LoadScript(filename, section, cmdlist))
//    {
//        cmdlist.clear();
//        return false;
//    }
//
//    BtnList.push_back(make_pair(name, cmdlist));
//    cmdlist.clear();
//
//    SetMaxValue(BtnList.size() - ShowMaxRows);
//    return true;
//}
//
//bool CMenuBox::DelBtn(string name)
//{
//    for(int i = BtnList.size() - 1; i >= 0; i--)
//    {
//        if (BtnList[i].first == name)
//        {
//            BtnList[i].second.clear();
//            BtnList.erase(BtnList.begin()+i);
//            
//            SetMaxValue(BtnList.size() - ShowMaxRows);
//            return true;
//        }
//    }
//    
//    return false;
//}
//
//void CMenuBox::ClearBtn()
//{
//    for(int i = 0; i < BtnList.size(); i++)
//        BtnList[i].second.clear();
//
//    BtnList.clear();
//
//    //SelectedChangeEvent_CmdList.clear();
//}
//
//void CMenuBox::Refresh()
//{
//    SDL_FillRect(Surf_Info, NULL, 0);
//
//    int size = BtnList.size();
//    for (int i = 0; i < (size < ShowMaxRows ? size : ShowMaxRows); i = i)
//    {
//        if (i+Offset < BtnList.size())
//            PrintInfo(-1, BtnList[i+Offset].first,i);
//    }
//}
